package com.jiang.utils;

import java.util.Random;

/**
 * RandomUtils
 * @author
 */
public class RandomUtils {
	
	/**
	 * 获取随机字符, a-zA-Z0-9中任意长度
	 * @param length			长度
	 * @return {@link String}
	 */
	public static String getRandomString(int length){
		if(length < 1)
			throw new IllegalArgumentException("传入的长度不能小于1!");
		
		char[] chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
		final int len = chars.length;
		
		StringBuffer buffer = new StringBuffer();
		for(int i = 0; i < length; i++)
			buffer.append(chars[new Random().nextInt(len)]);
		
		return buffer.toString();
	}
	
    /**
     * 获取一个随机数, 包含最大最小值
     * @param min			最小值
     * @param max			最大值
     * @return int
     */
	public static int getIntRandom(int min, int max) {
		if(max <=  min)
			return min;
		
        return new Random().ints(1, min, max + 1).findFirst().getAsInt();
    }
	
	/**
     * 获取一个随机数, 包含最大最小值，需要传入种子数
     * @param seed		种子数
     * @param min			最小值
     * @param max			最大值
     * @return int
     */
	public static int getIntRandom(long seed, int min, int max) {
    	return new Random(seed).ints(1, min, max + 1).findFirst().getAsInt();
    }
	
	/**
	 * 获取一个随机百分比，转换为小数输出
	 * @param min		最小值，单位 %
	 * @param max		最大值，单位 %
	 * @return double
	 */
	public double getRandomPercent(int min, int max){
		return (double)getIntRandom(min, max) / 100;
	}
	
	/**
	 * 获取一个随机百分比，转换为小数输出
	 * @param seed	种子数
	 * @param min		最小值，单位 %
	 * @param max		最大值，单位 %
	 * @return double
	 */
	public double getRandomPercent(long seed, int min, int max){
		return (double)getIntRandom(seed, min, max) / 100;
	}
}
